class RamData {
  readonly torque_enable: number;
  readonly led: number;
  readonly cw_compliance_margin: number;
  readonly ccw_compliance_margin: number;
  readonly cw_compliance_slope: number;
  readonly ccw_compliance_slope: number;
  readonly goal_position: number;
  readonly speed: number;
  readonly acceleration: number;
  readonly deceleration: number;
  readonly present_position: number;
  readonly present_speed: number;
  readonly present_load: number;
  readonly present_voltage: number;
  readonly temperature: number;
  readonly reg_write: number;
  readonly moving: number;
  readonly lock: number;
  readonly min_pwm: number;

  constructor({
    torque_enable = 0,
    led = 0,
    cw_compliance_margin = 0,
    ccw_compliance_margin = 0,
    cw_compliance_slope = 0,
    ccw_compliance_slope = 0,
    goal_position = 0,
    speed = 0,
    acceleration = 0,
    deceleration = 0,
    present_position = 0,
    present_speed = 0,
    present_load = 0,
    present_voltage = 0,
    temperature = 0,
    reg_write = 0,
    moving = 0,
    lock = 0,
    min_pwm = 0,
  }: Partial<RamData> = {}) {
    this.torque_enable = torque_enable;
    this.led = led;
    this.cw_compliance_margin = cw_compliance_margin;
    this.ccw_compliance_margin = ccw_compliance_margin;
    this.cw_compliance_slope = cw_compliance_slope;
    this.ccw_compliance_slope = ccw_compliance_slope;
    this.goal_position = goal_position;
    this.speed = speed;
    this.acceleration = acceleration;
    this.deceleration = deceleration;
    this.present_position = present_position;
    this.present_speed = present_speed;
    this.present_load = present_load;
    this.present_voltage = present_voltage;
    this.temperature = temperature;
    this.reg_write = reg_write;
    this.moving = moving;
    this.lock = lock;
    this.min_pwm = min_pwm;
  }
}

export default RamData;
